SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROC [dbo].[SP_TXTESO_CNTB_Q01]
/*-------------------------------------------------------------------*/                
/*----- Empresa           : OFISIS S.A.                          ----*/                
/*----- Cliente           : OFISIS S.A.                          ----*/                
/*----- Sistema           : Contabilidad                         ----*/                
/*----- Modulo            : Empresa                              ----*/                
/*----- Programa          : Impresi«n Voucher Ajuste por Diferencia de cambio Docs (EN LINEA 'ORI') ----*/                
/*----- Nombre            : SP_TXMVTO_CNTB_Q42                   ----*/                
/*----- Script            : TXMVTO_CNTB                          ----*/                
/*----- Desarrollado por  : PDGV                                 ----*/                
/*----- Fecha             :                                      ----*/                
/*----- Base de Datos     : MS SQL Server                        ----*/                
/*----- Version BD        : 8.0                                  ----*/                
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/                
/*----- Modificado 1 por : Percy Garcða                          ----*/                
/*----- Fecha Modifica   : 26/11/2003                            ----*/                
/*----- Detalle Modifica : Se bas« en el procedure de Nuevo Mundo,---*/               
/*----- se hicieron cambios para que sea en lðnea                ----*/                
/*----- Factor de cambio respecto fecha asto, graba status st_dife_camb ----*/                                 
/*----- graba s«lo secs para el asiento existente                ----*/                                 
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/                
/*----- Modificado 2 por : LMGP                                  ----*/                
/*----- Fecha Modifica   : 11/11/2004                            ----*/                
/*----- Detalle Modifica : Obtencion de max. glosa en asiento    ----*/               
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/                
/*----- Drop proc SP_TXMVTO_CNTB_R01                             ----*/                
/*----- Grant execute on SP_TXMVTO_CNTB_R01 to PUBLIC                ----*/                
/*----- SP_TXMVTO_CNTB_Q42                                                      
EXEC SP_TXMVTO_CNTB_R01  '01',1,'001','001','0000000028','','','02/07/2004',5, 2005,           
'', '', '', '', 5235, 5235                ----*/                
/*-------------------------------------------------------------------*/                
@ISCO_EMPR           TD_VC_002,                
@INNU_CNTB_EMPR      TD_IN_001,                
@ISCO_UNID_CNTB      TD_VC_003,                
@ISCO_OPRC_CNTB      TD_VC_003,                
@ISNU_ASTO           TD_VC_010,                
@ISCO_CNTA_EMPR      TD_VC_020,                
@ISST_CNTA_NATU      TD_VC_003,  -- 'COM' 0 'VEN'              
@IDFE_ASTO_CNTB      TD_DT_001,                
@INNU_MESE           TD_IN_001,                
@INNU_ANNO           TD_IN_001,                
@ISTI_AUXI_EMPR      TD_VC_001,                
@ISCO_AUXI_EMPR      TD_VC_020,                 
@ISTI_DOCU           TD_VC_003,                
@ISNU_DOCU           TD_VC_020,                  
@INTO_CARG           TD_NU_016_004,                  
@INTO_ABON           TD_NU_016_004                  
---WITH ENCRYPTION    
As    
Declare    
 @VDFE_VOUC          TD_DT_001,    
 @VDFE_CAMB          TD_DT_001,    
 @CNIM_ORIG_SALD     TD_NU_016_004,     @CNIM_SOLE_SALD     TD_NU_016_004,    
 @CSTI_DOCU          TD_VC_003,    
 @CSNU_DOCU          TD_VC_020,                
 @CDFE_DOCU          TD_DT_001,                
 @VNIM_ORIG_MVTO     TD_NU_016_004,                
 @VNIM_SOLE_MVTO     TD_NU_016_004,                
 @VNTO_SALD_ORIG     TD_NU_016_004,                
 @VNTO_SALD_SOLES    TD_NU_016_004,                
 @VNTO_AJUS          TD_NU_016_004,                
 @VSCO_CNTA_GANA     TD_VC_020,                
 @VSCO_CNTA_PERD     TD_VC_020,                
 @VSTI_OPER          TD_VC_003,                
 @VNTO_CNTA_GANA     TD_NU_016_004,                
 @VNTO_CNTA_PERD     TD_NU_016_004,                
 @VNTO_GANA_PEND     TD_NU_016_004,                
 @VNTO_PERD_PEND     TD_NU_016_004,                
 @VNNU_SECU          TD_IN_001,                 
 @VNNU_SECU_PEND     TD_IN_001,                 
 @VSCO_MONE_CNTB     TD_VC_003,                
 @VDFE_DOCU   TD_DT_001,           
 @CSTI_AUXI_EMPR     TD_VC_001,                
 @CSCO_AUXI_EMPR     TD_VC_020,                
 @VSID_GANA_CAMB     TD_VC_003,                
 @VSID_PERD_CAMB     TD_VC_003,                
 @VNFA_CMPR_REFE     TD_NU_015_006,                
 @VNFA_VNTA_REFE     TD_NU_015_006,                
 @VDFE_ASTO_CNTB   TD_DT_001,                
 @VNFA_CAMB_DIAR     TD_NU_015_006,                
 @VSST_CNTA          TD_VC_001,                
 @VNFA_CMPR_CNTA     TD_NU_015_006,                
 @VNFA_VNTA_CNTA     TD_NU_015_006,                
 @VNFA_CMPR_CNTB     TD_NU_015_006,                
 @VNFA_VNTA_CNTB     TD_NU_015_006,                
 @VSCO_MONE_CNTA     TD_VC_003,                
 @VSCO_GANA_DIFE     TD_VC_020,                
 @VSCO_PERD_DIFE     TD_VC_020,                
 @VSCO_CNTA_AJUS     TD_VC_020, -- CUENTA SE ENVIA A PROC SP_TXMVTO_CNTB_I34 (GESTION)               
 @VSST_AUXI_EMPR     TD_VC_001,                
 @VSTI_AUXI_DCGA     TD_VC_001,                
 @VSCO_AUXI_DCGA     TD_VC_020,                
 @VSTI_AUXI_DCPE     TD_VC_001,                
 @VSCO_AUXI_DCPE     TD_VC_020,                
 @VSST_FLAG          TD_VC_001,                
 @VNTO_CARG_0001     TD_NU_016_004,                
 @VNTO_ABON_0001     TD_NU_016_004,                
          
 @VSID_0006          TD_VC_003,                
 @VSID_BNCO          TD_VC_003,                
                
---- Multimoneda                
 @VSST_CNTA_CAMB     TD_VC_003,                
 @VNIM_MVTO_ORI2     TD_NU_016_004,                
 @VNFA_CAMB          TD_NU_015_006,                
                
 ---- Cursor CU_TXMVTO_CNTB_I10_2                
 @CSCO_EMPR_0002     TD_VC_002,                
 @CSCO_CNTA_EMPR     TD_VC_020,                
 @CNNU_CNTB_EMP2     TD_IN_001,                
 @VDFE_ASTO_CNT2     TD_DT_001,                
 @CNTI_CAMB_0002     TD_VC_003,                
 @CSCO_MONE_0002     TD_VC_003,                
 @CNFA_CAMB_0002     TD_NU_015_006,                
 @CSTI_OPER_0002     TD_VC_003,                
 @CNIM_MVTO_ORI2     TD_NU_016_004,                
 @CNIM_MVTO_CNT2     TD_NU_016_004,                
 @CSTI_AUXI_EMP2     TD_VC_001,                
 @CSCO_AUXI_EMP2     TD_VC_020,                
 @CSTI_DOCU_0002     TD_VC_003,                
 @CSST_CNTA_NATU     TD_VC_003,                
 @CSNU_DOCU_0002     TD_VC_020,                  
 @CDFE_DOCU_0002     TD_DT_001,                 
 @CDFE_ASTO_0001     TD_DT_001,                
 @VSCO_MONE_VALI     TD_VC_003,
 @VSCO_EMPR_EVAL     TD_VC_002,
 @VSCO_MONE_CORP     TD_VC_003
                
--- Inicializar-------------                
                
 Select @VSTI_AUXI_DCGA = Null                
 Select @VSCO_AUXI_DCGA = Null                
 Select @VSTI_AUXI_DCPE = Null                
 Select @VSCO_AUXI_DCPE = Null                
                 
               
  -- OBTIENE EL ULTIMO SECUENCIAL                 
                
 Select @VNNU_SECU = IsNull(MAX(NU_SECU), 0) + 1                
 From TXMVTO_CNTB                
 Where CO_EMPR = @ISCO_EMPR                
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR                
 And CO_UNID_CNTB = @ISCO_UNID_CNTB                  
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB                
 And NU_ANNO      = @INNU_ANNO                
 And NU_MESE      = @INNU_MESE                
 And NU_ASTO      = @ISNU_ASTO            
                   
 Select @VSCO_MONE_CORP = CO_MONE
 From TMCORP 
   
 /* Selecciona las cuenta de Ganacia y Perdida */                
 Select @VSCO_MONE_CNTB = CO_MONE,                
        @VSID_GANA_CAMB = ID_GANA_CAMB,                
        @VSID_PERD_CAMB = ID_PERD_CAMB                 
 From TTCNTB_EMPR                
 Where CO_EMPR = @ISCO_EMPR                
 and NU_CNTB_EMPR = @INNU_CNTB_EMPR                
                
 Select @VSST_AUXI_EMPR = 'N'                
 Select @VSCO_CNTA_GANA = t1.CO_CNTA_EMPR,                
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR                
 From TTIDEN_CNTA t1, oficont.dbo.TMPLAN_ANNO t2                
 Where t1.CO_EMPR = @ISCO_EMPR                 
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                 
 And t1.ID_CNTA = @VSID_GANA_CAMB                
 And t2.CO_EMPR = t1.CO_EMPR                
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                
                
 If @VSST_AUXI_EMPR = 'S'                
   Begin                
     Select @VSTI_AUXI_DCGA = TI_AUXI_DCGA,                
            @VSCO_AUXI_DCGA = CO_AUXI_DCGA                
     From   TMPARA_CONT                
     Where  CO_EMPR = @ISCO_EMPR                 
   End                
                
 Select @VSST_AUXI_EMPR = 'N'                
 Select @VSCO_CNTA_PERD = t1.CO_CNTA_EMPR,                
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR                
 From TTIDEN_CNTA t1, oficont.dbo.TMPLAN_ANNO t2                
 Where t1.CO_EMPR = @ISCO_EMPR                 
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                 
 And t1.ID_CNTA = @VSID_PERD_CAMB                
 And t2.CO_EMPR = t1.CO_EMPR                
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR           
               
 If @VSST_AUXI_EMPR = 'S'                
   Begin                
     Select @VSTI_AUXI_DCPE = TI_AUXI_DCPE,                
            @VSCO_AUXI_DCPE = CO_AUXI_DCPE                
     From TMPARA_CONT                
     Where CO_EMPR = @ISCO_EMPR                 
   End                
                           
/*Seccion para cuentAs que tengan Auxiliar */                
 Select @CNIM_ORIG_SALD = 0                
 Select @CNIM_SOLE_SALD = 0                
 Select @VNIM_ORIG_MVTO = 0                
 Select @VNIM_SOLE_MVTO = 0                
 Select @VNTO_CNTA_GANA = 0                
 Select @VNTO_CNTA_PERD = 0                
 Select @VNTO_GANA_PEND = 0                
 Select @VNTO_PERD_PEND = 0                
 Select @VNTO_SALD_ORIG = 0                 
 Select @VNTO_SALD_SOLES  = 0                
 Select @VNTO_AJUS = 0                
                 
 Create Table #TWMVTO_CNTB           
 ( CO_EMPR Varchar(2) NULL,           
 NU_CNTB_EMPR Int NULL,           
 CO_UNID_CNTB Varchar(3) NULL,           
 CO_OPRC_CNTB Varchar(3) NULL,           
 NU_ANNO Int NULL,          
 NU_MESE Int NULL,                
 NU_ASTO Varchar(10) NULL,           
 NU_SECU Int NULL,           
 FE_ASTO_CNTB DateTime NULL,           
 CO_CNTA_EMPR Varchar(20) NULL,           
 TI_AUXI_EMPR Varchar(1) NULL,           
 CO_AUXI_EMPR Varchar(20) NULL,           
 TI_DOCU Varchar(3) NULL,           
 NU_DOCU Varchar(20) NULL,                
 FE_DOCU DateTime NULL,           
 TI_CAMB Varchar(3) NULL,           
 CO_MONE Varchar(3) NULL,           
 FA_CAMB Numeric(15, 6) NULL,           
 TI_OPER Varchar(3) NULL,           
 IM_MVTO_ORIG Numeric(16, 4) NULL,           
 IM_MVTO_CNTB Numeric(16, 4) NULL,           
 DE_GLOS Varchar(100) NULL,           
 SI_MVTO_CNTB Varchar(3) NULL,        
 NO_GIRA Varchar(50) NULL,           
 ST_GEST Varchar(1) NULL,           
 ST_REDO Varchar(1) NULL,           
 ST_DIFE_CAMB Varchar(1) NULL,           
 FA_CAMB_DIAR Numeric(15, 6) NULL)                
          
 Create table #TWMVTO_CNT1                
 (CO_EMPR       varchar(2) NULL,                
  NU_CNTB_EMPR  integer NULL,                
  FE_ASTO_CNTB  datetime NULL,                
  TI_CAMB       varchar(3) NULL,                
  CO_MONE       varchar(3) NULL,                
 FA_CAMB       numeric(15,6) NULL,                
  TI_OPER       varchar(3) NULL,                
  IM_MVTO_ORIG  numeric(16,4) NULL,                
  IM_MVTO_CNTB  numeric(16,4) NULL,                
  CO_CNTA_EMPR  Varchar(20) NULL,           
  TI_AUXI_EMPR  varchar(1) NULL,                
  CO_AUXI_EMPR  varchar(20) NULL,                
  TI_DOCU       varchar(3) NULL,                
  ST_CNTA_NATU  varchar(3) NULL,                
  NU_DOCU       varchar(20) NULL,                
  FE_DOCU       datetime NULL,               
  FE_ASTO_0001  DateTime NULL)                
                
 ---- #TWMVTO_CNT2 guarda data para cursor CU_TXMVTO_CNTB_I10_1                
 Create table #TWMVTO_CNT2                
 (CO_CNTA_EMP2  Varchar(20) NULL,           
  TI_AUXI_EMP2  varchar(1) NULL,                
  CO_AUXI_EMP2  varchar(20) NULL,                
  TI_DOC2       varchar(3) NULL,                
  NU_DOC2       varchar(20) NULL,                
  FE_DOCU       datetime NULL,                 
  TI_OPER_0002  varchar(3) NULL,                
  IM_MVTO_ORI2  numeric(16,4) NULL,                
  IM_MVTO_CNT2  numeric(16,4)  NULL,              
  FE_ASTO_0001  DateTime NULL)                
          
 Select @VSCO_MONE_VALI = ''

 Select @VSID_0006 = ID_0006, @VSID_BNCO = ID_BNCO,
 @VSCO_MONE_VALI = IsNull(CO_MONE, '')           
 From TTCNTB_EMPR           
 Where CO_EMPR = @ISCO_EMPR           
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR           
          
 Declare CU_TXMVTO_CNTB_Q41_1 Cursor For           
 Select t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU          
 From TXMVTO_CNTB t1, oficont.dbo.TMPLAN_ANNO t2 
 Where t1.CO_EMPR = @ISCO_EMPR          
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR           
 And t1.CO_UNID_CNTB = @ISCO_UNID_CNTB          
 And t1.NU_ANNO = @INNU_ANNO          
 And t1.NU_MESE = @INNU_MESE          
 And t1.CO_OPRC_CNTB = @ISCO_OPRC_CNTB          
 And t1.NU_ASTO = @ISNU_ASTO         
 And t1.SI_MVTO_CNTB =  'APR'          
 And t1.ST_DIFE_CAMB =  'N'         
 And t2.CO_EMPR = t1.CO_EMPR        
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR        
 And t2.ST_DOCU_CNTB = 'S'
 And t2.ST_CNTA_MONE = 'S' 
 And t2.CO_MONE != @VSCO_MONE_VALI
 And t2.ST_CNTA_CTES = 'DOC' 
          
 Open CU_TXMVTO_CNTB_Q41_1                
 Fetch CU_TXMVTO_CNTB_Q41_1 Into @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU          
 While @@Fetch_status = 0                
   Begin        

---- SE AUMENTO ESTAS LINEA CASO CANCELACIONES PARCIALES
 Select @VSCO_EMPR_EVAL = ''

 Select @VSCO_EMPR_EVAL = CO_EMPR 
 From TXMVTO_CNTB
 Where CO_EMPR = @ISCO_EMPR 
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR 
 And NU_ANNO      =  @INNU_ANNO
 And NU_MESE      =  @INNU_MESE
 And CO_CNTA_EMPR = @CSCO_CNTA_EMPR 
 And TI_AUXI_EMPR = @CSTI_AUXI_EMPR 
 And CO_AUXI_EMPR = @CSCO_AUXI_EMPR
 And TI_DOCU = @CSTI_DOCU 
 And NU_DOCU = @CSNU_DOCU
 And SI_MVTO_CNTB = 'APR'
 And ST_DIFE_CAMB = 'S'
 And CO_UNID_CNTB + CO_OPRC_CNTB + NU_ASTO != @ISCO_UNID_CNTB + @ISCO_OPRC_CNTB + @ISNU_ASTO
          
 If Rtrim(Ltrim(IsNull(@VSCO_EMPR_EVAL, ''))) = '' --- SI NO HAY EN OTRA CANCELACION ENTONCES INSERTA
 Begin 
 Insert into #TWMVTO_CNT1 (CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, 
 IM_MVTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, ST_CNTA_NATU)
 Select CO_EMPR, @INNU_CNTB_EMPR, @VDFE_VOUC, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, 
 CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_CNTB, TI_CAMB
 From  TXMVTO_CNTB           
 Where CO_EMPR = @ISCO_EMPR                 
  And NU_CNTB_EMPR = @INNU_CNTB_EMPR                 
  And NU_ANNO = @INNU_ANNO                 
  And NU_MESE  <= @INNU_MESE                 
  And CO_CNTA_EMPR  = @CSCO_CNTA_EMPR                 
  And TI_AUXI_EMPR = @CSTI_AUXI_EMPR                 
  And CO_AUXI_EMPR = @CSCO_AUXI_EMPR                 
  And TI_DOCU = @CSTI_DOCU                 
  And NU_DOCU = @CSNU_DOCU                
  And SI_MVTO_CNTB  = 'APR'                 
  And ST_DIFE_CAMB = 'N'              
  Order By TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                       
 End
          
 Fetch CU_TXMVTO_CNTB_Q41_1 Into @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU          
 End              
 Close CU_TXMVTO_CNTB_Q41_1                
 Deallocate CU_TXMVTO_CNTB_Q41_1                
          
 ---- Cursor para convertir importe original en importe moneda contabilidad                
 Declare CU_TXMVTO_CNTB_Q41_2 Cursor                
 For                 
   Select CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB, CO_MONE, FA_CAMB,                
          TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                
          TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, ST_CNTA_NATU                
   From  #TWMVTO_CNT1                
   Order by TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                
                
 Open CU_TXMVTO_CNTB_Q41_2                
 Fetch CU_TXMVTO_CNTB_Q41_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                
 @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                
 @CNIM_MVTO_CNT2, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                
 @CDFE_DOCU, @CDFE_ASTO_0001, @CSST_CNTA_NATU          
                
 While @@Fetch_status = 0                
   Begin                
     ---- Convierte importe original en importe moneda contabilidad                 
                
/*     Exec SP_CONV_MONE_Q01  @CSCO_EMPR_0002, @CSCO_MONE_0002, @CNNU_CNTB_EMP2, @CNTI_CAMB_0002,                
       @CSST_CNTA_NATU, @CNFA_CAMB_0002, @VDFE_ASTO_CNT2, @CNIM_MVTO_ORI2, 'P', @VNIM_MVTO_ORI2 Output                
              
     If @CNIM_MVTO_ORI2 = 0.00            */    
       Select @VNIM_MVTO_ORI2 = @CNIM_MVTO_CNT2                
                
     ---- Inserta tabla temporal #TWMVTO_CNT2, campos serabn usados en el cursor CU_TXMVTO_CNTB_I10_1                
     Insert Into #TWMVTO_CNT2 Values(@CSCO_CNTA_EMPR, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002,                
     @CSNU_DOCU_0002, @CDFE_DOCU, @CSTI_OPER_0002, @CNIM_MVTO_ORI2, @VNIM_MVTO_ORI2, @CDFE_ASTO_0001 )                 
                
 Fetch CU_TXMVTO_CNTB_Q41_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                
 @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                
 @CNIM_MVTO_CNT2, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                
 @CDFE_DOCU, @CDFE_ASTO_0001, @CSST_CNTA_NATU                
 End /* While @@Fetch_status =0 */                
                
 Close CU_TXMVTO_CNTB_Q41_2                
 Deallocate CU_TXMVTO_CNTB_Q41_2                
          
          
-- Select @VSST_FLAG = 'N'              
 Declare CU_TXMVTO_CNTB_Q41_3 Cursor                
 For                 
   Select   CO_CNTA_EMP2, TI_DOC2, NU_DOC2, Max(FE_DOCU), TI_AUXI_EMP2, CO_AUXI_EMP2,                

 Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_ORI2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_ORI2, 0) ),2))), 0),                
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_CNT2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_CNT2, 0) ),2))), 0),               
     Min(FE_ASTO_0001)                  
   From #TWMVTO_CNT2                
   Group By CO_CNTA_EMP2, TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2          
   Order By CO_CNTA_EMP2, TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2          
                
 Open CU_TXMVTO_CNTB_Q41_3                
 Fetch CU_TXMVTO_CNTB_Q41_3 Into @CSCO_CNTA_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                 
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001                
                 
 While @@Fetch_status = 0                
   Begin                
                
 -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES               
 If @CDFE_ASTO_0001 != @IDFE_ASTO_CNTB And @CNIM_ORIG_SALD = 0             
 Begin               
/*-------------INICIO CALCULO FACTOR DE CAMBIO (SOLO INGRESA 1 VEZ)------------------------*/              
          
---- Si hay amarre con Cuentas de Dif De cambio en la TMPLAN_EMPR. Toma esas cuentas------------                
 Select @VSCO_GANA_DIFE = Ltrim(Rtrim(IsNull(CO_GANA_DIFE,''))),                
        @VSCO_PERD_DIFE = Ltrim(Rtrim(IsNull(CO_PERD_DIFE,'')))                
 From  TMPLAN_EMPR                
 Where CO_EMPR = @ISCO_EMPR                
 And   CO_CNTA_EMPR = @CSCO_CNTA_EMPR                
                
 If @VSCO_GANA_DIFE <> '' And @VSCO_PERD_DIFE <> ''                
   Begin                
     Select @VSCO_CNTA_GANA = @VSCO_GANA_DIFE      
     Select @VSCO_CNTA_PERD = @VSCO_PERD_DIFE                
   End          
              
-- If @VSST_FLAG = 'N'               
-- Begin               
 Select @VSCO_MONE_CNTA = CO_MONE                
 From TMPLAN_EMPR                
 Where CO_EMPR = @ISCO_EMPR                
 and CO_CNTA_EMPR = @CSCO_CNTA_EMPR                
 And NU_ANNO = 9999      
               
/*----------- Para obtener el factor de la moneda de la cuenta -------*/                
 SELECT @VNFA_CMPR_CNTA = FA_CMPR_OFIC, @VNFA_VNTA_CNTA = FA_VNTA_OFIC                
 FROM TCFACT_CAMB                
 WHERE CO_MONE = @VSCO_MONE_CNTA                
 And   FE_CAMB = @CDFE_ASTO_0001              
                
/*------------- Para obtener el factor de la moneda de la contabilidad ----------*/                
 SELECT @VNFA_CMPR_CNTB = FA_CMPR_OFIC, @VNFA_VNTA_CNTB = FA_VNTA_OFIC                 
 FROM TCFACT_CAMB                
 WHERE CO_MONE = @VSCO_MONE_CNTB                
 And   FE_CAMB = @CDFE_ASTO_0001              
                
 if @VNFA_CMPR_CNTA is NULL                
   Select @VNFA_CMPR_CNTA = 1.00                
                
 if @VNFA_VNTA_CNTA is NULL                
   Select @VNFA_VNTA_CNTA = 1.00                
                
 if @VNFA_CMPR_CNTB is NULL                
   Select @VNFA_CMPR_CNTB = 1.00                
                
 if @VNFA_VNTA_CNTB is NULL                
   Select @VNFA_VNTA_CNTB = 1.00                
                
 Select @VNFA_CMPR_REFE = @VNFA_CMPR_CNTA / @VNFA_CMPR_CNTB                
 Select @VNFA_VNTA_REFE = @VNFA_VNTA_CNTA / @VNFA_VNTA_CNTB                
                
 If @VNFA_CMPR_REFE IS NULL                
  Select @VNFA_CMPR_REFE = 1.00                
                
 If @VNFA_VNTA_REFE IS NULL                
  Select @VNFA_VNTA_REFE = 1.00                
              
 Select @VSST_FLAG = 'S'              
               
-- End               
              
/*-----FIN CALCULO FACTOR DE CAMBIO -----------------*/              
              
     Select @VNTO_SALD_ORIG = 0                
     Select @VNTO_SALD_SOLES  = 0   
     Select @VNTO_AJUS = 0                
     Select @VNTO_SALD_ORIG = ROUND(@CNIM_ORIG_SALD,2)                
     Select @VNTO_SALD_SOLES  = ROUND(@CNIM_SOLE_SALD,2)                
                
     If @ISST_CNTA_NATU = 'COM'                
       Begin                
         Select @VNTO_SALD_ORIG = @VNTO_SALD_ORIG * @VNFA_CMPR_REFE                
       End                
     Else                
       Begin                
         Select @VNTO_SALD_ORIG = @VNTO_SALD_ORIG * @VNFA_VNTA_REFE                
       End                
                
     Select @VNTO_AJUS = ROUND(@VNTO_SALD_ORIG,2) - ROUND(@VNTO_SALD_SOLES,2)                
                
     If @VNTO_AJUS != 0.00                
       Begin                 
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                 
           Begin                   
             Select @VNTO_AJUS = ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                
                      
             If @VNTO_AJUS > 0.00                
               Begin                  
                
                  -- @IDFE_ASTO_CNTB EL LUGAR DE  @VDFE_VOUC                
                 Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                
                 /*Comentario : Insercion del Asiento de Ajuste*/                
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                 
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                 
                 FA_CAMB_DIAR)                
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                
                 'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000)                
                 Select @VNNU_SECU = @VNNU_SECU + 1                
               End /* If @VNTO_AJUS > 0 */         
                
             If @VNTO_AJUS < 0.00                
               Begin                 
                 /*Comentario : Insercion del Asiento de Ajuste*/                
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU,FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,  FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                
                 FA_CAMB_DIAR)                
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                 
                 'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO','APR', '  ', 'N', 'N', 'S', 1.000000)                
                 Select @VNNU_SECU = @VNNU_SECU + 1                
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                
          End /* If @VNTO_AJUS < 0 */                
           End  /* If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES > 0 ) */          
                   
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                
           Begin                
             Select @VNTO_AJUS = abs(ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                
             If @VNTO_AJUS > 0.00                
               Begin                
                 /*Comentario : Insercion del Asiento de Ajuste */                
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                  
                 FA_CAMB_DIAR)                
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB,                
                 1.000000, 'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S',            
                 1.000000)                
                 Select @VNNU_SECU = @VNNU_SECU + 1                
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                
               End /* If @VNTO_AJUS > 0 */                
                         
             If @VNTO_AJUS < 0.00                
               Begin                
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                
                 /*Comentario : Insercion del Asiento de Ajuste*/                
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,              
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                  
                FA_CAMB_DIAR)                
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                
                 'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000)                
                 Select @VNNU_SECU = @VNNU_SECU + 1                
               End /* If @VNTO_AJUS < 0 */                
           End /*If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES < 0 ) */                
                
         If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                
           Begin                
             Select @VNTO_AJUS =  (0.00 - ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                
             If @VNTO_AJUS > 0.00                
               Begin                
               /*Comentario : Insercion del Asiento de Ajuste*/                
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                
               'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                
               Select @VNNU_SECU = @VNNU_SECU + 1                
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                    
             End /* If @VNTO_AJUS > 0 */                
                
           If @VNTO_AJUS < 0.00                
             Begin                
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                
               /*Comentario : Insercion del Asiento de Ajuste*/                
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                
               'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                
               Select @VNNU_SECU = @VNNU_SECU + 1                
             End /* If @VNTO_AJUS < 0      */                
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                
                
       If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                
         Begin                
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                
           If @VNTO_AJUS > 0.00                
             Begin                
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                
               /*Comentario : Insercion del Asiento de Ajuste*/                
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,               
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR',  '  ', 'N', 'N', 'S', 1.000000)                
               Select @VNNU_SECU = @VNNU_SECU + 1                
             End /* If @VNTO_AJUS > 0 */                
                
           If @VNTO_AJUS < 0.00                
             Begin                
               /*Comentario : Insercion del Asiento de Ajuste*/                
           Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                
               Select @VNNU_SECU = @VNNU_SECU + 1                
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                    
             End /* If @VNTO_AJUS < 0      */                
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                      
                
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                
         Begin                
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                
           If @VNTO_AJUS > 0.00                
             Begin                
             Select @VNTO_CNTA_PERD = @VNTO_CNTA_PERD + ROUND(@VNTO_AJUS,2)                    
               /*Comentario : Insercion del Asiento de Ajuste*/                
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S',1.000000)                
               Select @VNNU_SECU = @VNNU_SECU + 1                
             End                
         End /*If( @VNTO_SALD_ORIG = 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                 
                
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                
         Begin            
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                
           If @VNTO_AJUS < 0.00         
          Begin                
               /* Insercion del Asiento de Ajuste*/                
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,   
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                
               Select @VNNU_SECU = @VNNU_SECU + 1              
               Select @VNTO_CNTA_GANA = @VNTO_CNTA_GANA - abs(ROUND(@VNTO_AJUS,2))                
             End                 
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                
     End    /*If @VNTO_AJUS != 0 */                
          
          
/* Insercion de cuenta de pTrdida en diferencia de cambio      */                
 If @VNTO_CNTA_PERD != 0.00                
   Begin                      
     If @VNTO_CNTA_PERD > 0.00                
       Begin                
         Select @VSTI_OPER = 'CAR'                
       End                        
     Else If @VNTO_CNTA_PERD < 0.00                
       Begin                
         Select @VSTI_OPER = 'ABO'                
       End                
                
     /*Comentario : Insercion del Asiento de Ajuste*/                
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                 
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_PERD), 'AJUST x DIF.CAMBIO',                
     'APR', '  ', 'N', 'N', 'S', 1.000000)                
--**     Select @VNNU_SECU = @VNNU_SECU + 1                
   End                
                
/* Insercion de cuenta de pTrdida en diferencia de cambio Pendiente */                
 If @VNTO_PERD_PEND != 0.00                
   Begin                      
     If @VNTO_PERD_PEND > 0.00                
       Begin                
         Select @VSTI_OPER = 'CAR'                
       End                        
     Else If @VNTO_PERD_PEND < 0.00                
       Begin                
         Select @VSTI_OPER = 'ABO'                
       End                
                
     /*Comentario : Insercion del Asiento de Ajuste*/                
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                 
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_PERD_PEND), 'AJUST x DIF.CAMBIO',                
     'APR', '  ', 'N', 'N', 'S', 1.000000)                
--**     Select @VNNU_SECU = @VNNU_SECU + 1                 
   End                
                
/* Insercion de cuenta de ganancia en diferencia de cambio */                
 If @VNTO_CNTA_GANA != 0.00                
   Begin                
     If @VNTO_CNTA_GANA > 0.00                
       Begin                
         Select @VSTI_OPER = 'CAR'                
       End                        
     Else If @VNTO_CNTA_GANA < 0.00                
       Begin                
         Select @VSTI_OPER = 'ABO'                
       End                
     /*Comentario :Insercion del Asiento de Ajuste*/                
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_GANA), 'AJUST x DIF.CAMBIO',                
     'APR', '  ', 'N', 'N', 'S', 1.000000)                
   End                
                
/* Insercion de cuenta de ganancia en diferencia de cambio */                
 If @VNTO_GANA_PEND != 0.00                
   Begin                
     If @VNTO_GANA_PEND > 0.00                
       Begin                
         Select @VSTI_OPER = 'CAR'                
       End                        
     Else If @VNTO_GANA_PEND < 0.00                
       Begin                
         Select @VSTI_OPER = 'ABO'                
       End                
     /*Comentario :Insercion del Asiento de Ajuste*/                
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_GANA_PEND), 'AJUST x DIF.CAMBIO',                
     'APR', '  ', 'N', 'N', 'S', 1.000000)                
   End                
 Select @VNTO_GANA_PEND = 0          
 Select @VNTO_PERD_PEND = 0          
 Select @VNTO_CNTA_GANA = 0          
 Select @VNTO_CNTA_PERD = 0          
          
    If @VNTO_PERD_PEND != 0 Or @VNTO_CNTA_PERD != 0               
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_PERD              
              
    If @VNTO_GANA_PEND != 0 Or @VNTO_CNTA_GANA != 0               
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_GANA              
                 
    Exec OFICONT.dbo.SP_TXMVTO_CNTB_Q43 @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB,                
    @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VSCO_CNTA_AJUS, 'ORI', @VSID_GANA_CAMB, @VSID_PERD_CAMB,           
    @VNNU_SECU, @VNNU_SECU OUT          
          
    Select @VNNU_SECU = @VNNU_SECU +  1          
             
             
 End /*FIN  -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES */              
              
 Fetch CU_TXMVTO_CNTB_Q41_3 Into @CSCO_CNTA_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                 
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001                
                
 End /* While @@Fetch_status =0 */                
 Close CU_TXMVTO_CNTB_Q41_3                
 Deallocate CU_TXMVTO_CNTB_Q41_3                
                       
 Select @VNTO_CARG_0001 = IsNull( SUM( ( ROUND( ((ASCII(TI_OPER)/67) * Isnull(IM_MVTO_CNTB, 0)), 2))), 0),          
 @VNTO_ABON_0001 = IsNull( SUM( ( ROUND( ((65/ASCII(TI_OPER)) * Isnull(IM_MVTO_CNTB, 0)), 2))), 0)          
 From #TWMVTO_CNTB      
          
 Select @VNTO_CARG_0001 = @INTO_CARG + IsNull(@VNTO_CARG_0001, 0)          
 Select @VNTO_ABON_0001 = @INTO_ABON + IsNull(@VNTO_ABON_0001, 0)          
          
 Select  T1.NU_SECU 'SECUENCIAL', T1.CO_CNTA_EMPR 'CUENTA', T1.TI_AUXI_EMPR 'TIPO AUXILIAR',          
 T1.CO_AUXI_EMPR 'CODIGO AUXILIAR', T1.TI_DOCU 'DOCUMENTO', T1.NU_DOCU 'NUMERO DOC.',          
 Convert(Varchar(10), T1.FE_DOCU,103) 'FECHA DOC.', T1.TI_OPER 'OPERACION', T1.CO_MONE 'MONEDA',          
 T1.FA_CAMB 'FACTOR CAMBIO', T1.IM_MVTO_ORIG 'IMPORTE ORIGEN', T1.CO_ORDE_SERV 'ORDEN SERVICIO',          
 T1.TI_DOCU_REFE 'DOC.REFERENCIA', T1.NU_DOCU_REFE 'NUM.DOC.REFERENCIA',     
 (Select max(T2.DE_GLOS) from TXMVTO_CNTB T2    
  Where T1.CO_EMPR = T2.CO_EMPR     
  And  T1.NU_CNTB_EMPR  = T2.NU_CNTB_EMPR      
  And  T1.CO_UNID_CNTB  = T2.CO_UNID_CNTB      
  And  T1.NU_ANNO  = T2.NU_ANNO        
  And  T1.NU_MESE  = T2.NU_MESE        
  And  T1.CO_OPRC_CNTB  = T2.CO_OPRC_CNTB      
  And  T1.NU_ASTO  = T2.NU_ASTO     
  And  T2.ST_GEST = 'N'    
  And  T2.ST_REDO = 'N'    
  And  T2.ST_DIFE_CAMB = 'N' ) 'GLOSA', T1.IM_MVTO_CNTB 'IMPORTE CONTABLE', 
 oficont.DBO.FU_CONV_MONE(T1.CO_MONE, @VSCO_MONE_CORP, T1.TI_CAMB, T1.FA_CAMB_DIAR, T1.IM_MVTO_ORIG, T1.NU_ANNO, T1.NU_MESE) 'IMPORTE MON CORPORATIVA',
 T1.CO_CLAV_TAOR 'ORIGEN', T1.NO_GIRA 'GIRADO A', @VNTO_CARG_0001 'TOTAL CARGO', @VNTO_ABON_0001 'TOTAL ABONO'          
 From TXMVTO_CNTB T1    
 Where T1.CO_EMPR = @ISCO_EMPR          
 And   T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR          
 And   T1.CO_UNID_CNTB = @ISCO_UNID_CNTB          
 And   T1.NU_ANNO = @INNU_ANNO          
 And   T1.NU_MESE = @INNU_MESE          
 And   T1.CO_OPRC_CNTB = @ISCO_OPRC_CNTB          
 And   T1.NU_ASTO = @ISNU_ASTO          
 And   T1.SI_MVTO_CNTB In ('APR', 'DIG')          
 Union All          
 Select  T1.NU_SECU 'SECUENCIAL', T1.CO_CNTA_EMPR 'CUENTA', T1.TI_AUXI_EMPR 'TIPO AUXILIAR',          
 T1.CO_AUXI_EMPR 'CODIGO AUXILIAR', T1.TI_DOCU 'DOCUMENTO', T1.NU_DOCU 'NUMERO DOC.',          
 Convert(Varchar(10), T1.FE_DOCU,103) 'FECHA DOC.', T1.TI_OPER 'OPERACION', T1.CO_MONE 'MONEDA',          
 T1.FA_CAMB 'FACTOR CAMBIO', T1.IM_MVTO_ORIG 'IMPORTE ORIGEN', NULL 'ORDEN SERVICIO',          
 NULL 'DOC. REFERENCIA', NULL 'NUM.DOC.REFERENCIA',     
 (Select max(T2.DE_GLOS) from #TWMVTO_CNTB T2    
  Where T1.CO_EMPR = T2.CO_EMPR     
  And  T1.NU_CNTB_EMPR  = T2.NU_CNTB_EMPR      
  And  T1.CO_UNID_CNTB  = T2.CO_UNID_CNTB      
  And  T1.NU_ANNO  = T2.NU_ANNO        
  And  T1.NU_MESE  = T2.NU_MESE        
  And  T1.CO_OPRC_CNTB  = T2.CO_OPRC_CNTB      
  And  T1.NU_ASTO  = T2.NU_ASTO     
  And  T2.ST_GEST = 'N'    
  And  T2.ST_REDO = 'N'    
  And  T2.ST_DIFE_CAMB = 'N' ) 'GLOSA',    
 T1.IM_MVTO_CNTB 'IMPORTE CONTABLE', 0 'IMPORTE MON CORPORATIVA', NULL 'ORIGEN', NULL 'GIRADO A',           
 @VNTO_CARG_0001 'TOTAL CARGO', @VNTO_ABON_0001 'TOTAL ABONO'          
 From #TWMVTO_CNTB T1 
 Order By 1 

Return                
/*-------------------------------- Fin -----------------------------*/


GO
